//pinia 也是可以进行分模块定义
import { defineStore } from 'pinia'
import { userLogin, refreshUserInfo } from '@/api/user/index'
import pinia from '@/store/index'
//创建商店
const useUserStore = defineStore('userInfo', {
  state: () => ({
    username: '',//用户名
    accessToken: '',//登录token
    roles: ['common'],//角色列表
  }),
  //计算属性
  getters: {

  },
  //方法
  actions: {
    //用户登录方法
    storeUserLogin(data) {
      return userLogin(data).then(res => {
        //持久化存储用户信息
        this.username = res.username
        this.accessToken = res.access_token
        this.roles = res.roles
        return res
      })
    },
    //刷新用户信息
    storeRefreshUserInfo() {
      return refreshUserInfo({
        accessToken: this.accessToken
      }).then(res => {
        this.username = res.username
        this.accessToken = res.access_token
        this.roles = res.roles
        return res
      }).catch(err => {
        this.accessToken = ''
      })
    }
  },
  //持久化存储--因为我们安装了持久化插件
  persist: {
    key: 'userInfo',
    storage: sessionStorage,
    paths: ['accessToken']
  }
})
//向外暴露 store 实例的函数
export function useUserStoreFn() {
  return useUserStore(pinia)
}